/* Copyright (c) 2025 Beijing Semidrive Technology Corporation
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/** *****************************************************************************************************
 *  \file     lnk_sym.h                                                                                 *
 *  \brief    This file contains interface header for MCU MCAL driver, ...                              *
 *                                                                                                      *
 * <table>                                                                                              *
 * <tr><th>Date           <th>Version                                                                   *
 * <tr><td>2023/09/11     <td>1.0.0                                                                     *
 * </table>                                                                                             *
 *******************************************************************************************************/

#ifndef LNK_SYM_E3650_H
#define LNK_SYM_E3650_H

#if !defined(ASSEMBLY)
#if defined(__ARMCC_VERSION)
/*PRQA S 3684 115*/
extern unsigned long Load$$data$$Base[];
extern unsigned long Image$$data$$Base[];
extern unsigned long Image$$data$$Limit[];
extern unsigned long Image$$bss$$ZI$$Base[];
extern unsigned long Image$$bss$$ZI$$Limit[];
extern unsigned long Image$$ram_func$$Base[];
extern unsigned long Image$$ram_func$$Limit[];
extern unsigned long Load$$ram_func$$Base[];
extern unsigned long Image$$heap$$ZI$$Base[];
extern unsigned long Image$$stack$$ZI$$Base[];
extern unsigned long Image$$stack$$ZI$$Limit[];
extern unsigned long Image$$TEST_SECTION$$Base[];
extern unsigned long Image$$TEST_SECTION$$Limit[];
extern unsigned long Image$$vector$$Base[];
extern unsigned long Image$$shell_cmd$$Base[];
extern unsigned long Image$$shell_cmd$$Limit[];
#elif defined(_IAR_C_)
extern unsigned long CDATA$$Base[];
extern unsigned long CDATA$$Limit[];
extern unsigned long CDATA_init$$Base[];
extern unsigned long CDATA_init$$Limit[];
extern unsigned long CBSS$$Base[];
extern unsigned long CBSS$$Limit[];
extern unsigned long MCALDATA$$Base[];
extern unsigned long MCALDATA$$Limit[];
extern unsigned long MCALBSS$$Base[];
extern unsigned long MCALBSS$$Limit[];

extern unsigned long MCALDATA_CORE0$$Base[];
extern unsigned long MCALDATA_CORE0$$Limit[];
extern unsigned long MCALDATA_CORE1$$Base[];
extern unsigned long MCALDATA_CORE1$$Limit[];
extern unsigned long MCALDATA_CORE2$$Base[];
extern unsigned long MCALDATA_CORE2$$Limit[];
extern unsigned long MCALDATA_CORE3$$Base[];
extern unsigned long MCALDATA_CORE3$$Limit[];
extern unsigned long MCALBSS_CORE0$$Base[];
extern unsigned long MCALBSS_CORE0$$Limit[];
extern unsigned long MCALBSS_CORE1$$Base[];
extern unsigned long MCALBSS_CORE1$$Limit[];
extern unsigned long MCALBSS_CORE2$$Base[];
extern unsigned long MCALBSS_CORE2$$Limit[];
extern unsigned long MCALBSS_CORE3$$Base[];
extern unsigned long MCALBSS_CORE3$$Limit[];

extern unsigned long TCMBSS$$Base[];
extern unsigned long TCMBSS$$Limit[];
extern unsigned long IRAMBSS$$Base[];
extern unsigned long IRAMBSS$$Limit[];
extern unsigned long TCMDATA$$Base[];
extern unsigned long TCMDATA$$Limit[];
extern unsigned long TCMDATA_init$$Base[];
extern unsigned long IRAMDATA$$Base[];
extern unsigned long IRAMDATA$$Limit[];
extern unsigned long IRAMDATA_init$$Base[];
extern unsigned long TCMFUNC$$Base[];
extern unsigned long TCMFUNC$$Limit[];
extern unsigned long TCMFUNC_init$$Base[];
extern unsigned long IRAMFUNC$$Base[];
extern unsigned long IRAMFUNC$$Limit[];
extern unsigned long IRAMFUNC_init$$Base[];
extern unsigned long MCALDATA_init$$Base[];

extern unsigned long MCALDATA_CORE0_init$$Base[];
extern unsigned long MCALDATA_CORE1_init$$Base[];
extern unsigned long MCALDATA_CORE2_init$$Base[];
extern unsigned long MCALDATA_CORE3_init$$Base[];

extern unsigned long CSTACK$$Base[];
extern unsigned long CSTACK$$Limit[];
extern unsigned long DMABUFFER$$Base[];
extern unsigned long DMABUFFER$$Limit[];
extern unsigned long TEST_SECTION$$Base[];
extern unsigned long TEST_SECTION$$Limit[];
extern unsigned long HEAP$$Base[];
extern unsigned long HEAP$$Limit[];
extern unsigned long shell_cmd$$Base[];
extern unsigned long shell_cmd$$Limit[];
extern unsigned long CORE0CSTACK$$Base[];
extern unsigned long CORE0CSTACK$$Limit[];
extern unsigned long CORE1CSTACK$$Base[];
extern unsigned long CORE1CSTACK$$Limit[];
extern unsigned long CORE2CSTACK$$Base[];
extern unsigned long CORE2CSTACK$$Limit[];
extern unsigned long CORE3CSTACK$$Base[];
extern unsigned long CORE3CSTACK$$Limit[];

/* Used for Mpu configurations */
extern unsigned long FLASH_BPT_START;
extern unsigned long FLASH_BPT_END;
extern unsigned long FLASH_BL_START;
extern unsigned long FLASH_BL_END;
extern unsigned long FLASH_TEXT_START;
extern unsigned long FLASH_TEXT_END;
extern unsigned long FLASH_CONST_START;
extern unsigned long FLASH_CONST_END;
extern unsigned long FLASH_DATA_INIT_START;
extern unsigned long FLASH_DATA_INIT_END;
extern unsigned long FLASH_FUNC_INIT_START;
extern unsigned long FLASH_FUNC_INIT_END;
extern unsigned long FLASH_LP_TEXT_START;
extern unsigned long FLASH_LP_TEXT_END;
extern unsigned long FLASH_LP_CONST_START;
extern unsigned long FLASH_LP_CONST_END;
extern unsigned long FLASH_LP_DATA_START;
extern unsigned long FLASH_LP_DATA_END;
extern unsigned long FLASH_RESERVED2_START;
extern unsigned long FLASH_RESERVED2_END;
extern unsigned long FLASH_RESERVED3_START;
extern unsigned long FLASH_RESERVED3_END;
extern unsigned long FLASH_RESERVED_B_START;
extern unsigned long FLASH_RESERVED_B_END;
extern unsigned long CRAM_TEXT_START;
extern unsigned long CRAM_TEXT_END;
extern unsigned long CRAM_XCP_START;
extern unsigned long CRAM_XCP_END;
extern unsigned long CRAM_RESERVED_START;
extern unsigned long CRAM_RESERVED_END;
extern unsigned long IRAM_BT_START;
extern unsigned long IRAM_BT_END;
extern unsigned long IRAM_FUNC_START;
extern unsigned long IRAM_FUNC_END;
extern unsigned long IRAM_NOCACHE_START;
extern unsigned long IRAM_NOCACHE_END;
extern unsigned long IRAM_DATA_START;
extern unsigned long IRAM_DATA_END;
extern unsigned long IRAM_BSS_START;
extern unsigned long IRAM_BSS_END;
extern unsigned long IRAM_TEXT_START;
extern unsigned long IRAM_TEXT_END;
extern unsigned long IRAM_CONST_START;
extern unsigned long IRAM_CONST_END;
extern unsigned long IRAM_DATA_INIT_START;
extern unsigned long IRAM_DATA_INIT_END;
extern unsigned long IRAM_FUNC_INIT_START;
extern unsigned long IRAM_FUNC_INIT_END;
extern unsigned long CORE0TCMA_START;
extern unsigned long CORE0TCMA_END;
extern unsigned long CORE0TCMB_START;
extern unsigned long CORE0TCMB_END;
extern unsigned long CORE0TCMC_START;
extern unsigned long CORE0TCMC_END;
extern unsigned long CORE1TCMA_START;
extern unsigned long CORE1TCMA_END;
extern unsigned long CORE1TCMB_START;
extern unsigned long CORE1TCMB_END;
extern unsigned long CORE1TCMC_START;
extern unsigned long CORE1TCMC_END;
extern unsigned long CORE2TCMA_START;
extern unsigned long CORE2TCMA_END;
extern unsigned long CORE2TCMB_START;
extern unsigned long CORE2TCMB_END;
extern unsigned long CORE2TCMC_START;
extern unsigned long CORE2TCMC_END;
extern unsigned long CORE3TCMA_START;
extern unsigned long CORE3TCMA_END;
extern unsigned long CORE3TCMB_START;
extern unsigned long CORE3TCMB_END;
extern unsigned long CORE3TCMC_START;
extern unsigned long CORE3TCMC_END;
extern unsigned long MCALTEXTFAST$$Base[];
extern unsigned long MCALTEXTFAST$$Limit[];
extern unsigned long MCALTEXTFAST_init$$Base[];
#else
extern unsigned long __load_data_start[];
extern unsigned long __data_start[];
extern unsigned long __data_end[];
extern unsigned long __bss_start[];
extern unsigned long __bss_end[];
extern unsigned long __iram_func_start[];
extern unsigned long __iram_func_end[];
extern unsigned long __iram_func_load_addr[];
extern unsigned long __tcm_func_start[];
extern unsigned long __tcm_func_end[];
extern unsigned long __tcm_func_load_addr[];
extern unsigned long __iram_data_start[];
extern unsigned long __iram_data_end[];
extern unsigned long __iram_data_load_addr[];
extern unsigned long __tcm_data_start[];
extern unsigned long __tcm_data_end[];
extern unsigned long __tcm_data_load_addr[];
extern unsigned long __iram_bss_start[];
extern unsigned long __iram_bss_end[];
extern unsigned long __tcm_bss_start[];
extern unsigned long __tcm_bss_end[];
extern unsigned long __dma_buffer_start[];
extern unsigned long __dma_buffer_end[];
extern unsigned long __heap_start[];
extern unsigned long __heap_end[];
extern unsigned long __stack_start[];
extern unsigned long __stack_end[];
extern unsigned long __start_TEST_SECTION[];
extern unsigned long __stop_TEST_SECTION[];
extern unsigned long __rom_end[];
extern unsigned long __start_shell_cmd[];
extern unsigned long __stop_shell_cmd[];
extern unsigned long  __load_mcaldata_start[];
extern unsigned long  __mcalbss_start[];
extern unsigned long __mcalbss_end[];
extern unsigned long __mcaldata_start[];
extern unsigned long __mcaldata_end[];
extern unsigned long __mcaltext_fast_start[];
extern unsigned long __mcaltext_fast_end[];
extern unsigned long __mcaltext_fast_load_addr[];
extern unsigned long __r5_lp_boot_bin_start[];
extern unsigned long __r5_lp_boot_bin_end[];
#endif /** #if defined(__ARMCC_VERSION) */
#endif /** #if !defined(ASSEMBLY) */

#if defined(__ARMCC_VERSION)
#define __load_data_start               Load$$data$$Base
#define __data_start                    Image$$data$$Base
#define __data_end                      Image$$data$$Limit
#define __bss_start                     Image$$bss$$ZI$$Base
#define __bss_end                       Image$$bss$$ZI$$Limit
#define __ram_func_start                Image$$ram_func$$Base
#define __ram_func_end                  Image$$ram_func$$Limit
#define __load_ram_func_start           Load$$ram_func$$Base
#define __stack_start                   Image$$stack$$ZI$$Base
#define __stack_end                     Image$$stack$$ZI$$Limit
#define __heap_start                    Image$$heap$$ZI$$Base
#define __heap_end                      __stack_start
#define __start_TEST_SECTION            Image$$TEST_SECTION$$Base
#define __stop_TEST_SECTION             Image$$TEST_SECTION$$Limit
#define __vector_tbl_start              Image$$vector$$Base
#define __start_shell_cmd               Image$$shell_cmd$$Base
#define __stop_shell_cmd                Image$$shell_cmd$$Limit
#elif defined(_IAR_C_)
#define __load_data_start               CDATA_init$$Base
#define __data_start                    CDATA$$Base
#define __data_end                      CDATA$$Limit
#define __bss_start                     CBSS$$Base
#define __bss_end                       CBSS$$Limit
#define __load_mcaldata_start           MCALDATA_init$$Base

#define __load_mcaldata_start_core0     MCALDATA_CORE0_init$$Base
#define __load_mcaldata_start_core1     MCALDATA_CORE1_init$$Base
#define __load_mcaldata_start_core2     MCALDATA_CORE2_init$$Base
#define __load_mcaldata_start_core3     MCALDATA_CORE3_init$$Base

#define __mcalbss_start                 MCALBSS$$Base
#define __mcalbss_end                   MCALBSS$$Limit
#define __tcm_bss_start                 TCMBSS$$Base
#define __tcm_bss_end                   TCMBSS$$Limit
#define __iram_bss_start                IRAMBSS$$Base
#define __iram_bss_end                  IRAMBSS$$Limit
#define __mcaldata_start                MCALDATA$$Base
#define __mcaldata_end                  MCALDATA$$Limit

#define __mcalbss_start_core0           MCALBSS_CORE0$$Base
#define __mcalbss_end_core0             MCALBSS_CORE0$$Limit
#define __mcalbss_start_core1           MCALBSS_CORE1$$Base
#define __mcalbss_end_core1             MCALBSS_CORE1$$Limit
#define __mcalbss_start_core2           MCALBSS_CORE2$$Base
#define __mcalbss_end_core2             MCALBSS_CORE2$$Limit
#define __mcalbss_start_core3           MCALBSS_CORE3$$Base
#define __mcalbss_end_core3             MCALBSS_CORE3$$Limit
#define __mcaldata_start_core0          MCALDATA_CORE0$$Base
#define __mcaldata_end_core0            MCALDATA_CORE0$$Limit
#define __mcaldata_start_core1          MCALDATA_CORE1$$Base
#define __mcaldata_end_core1            MCALDATA_CORE1$$Limit
#define __mcaldata_start_core2          MCALDATA_CORE2$$Base
#define __mcaldata_end_core2            MCALDATA_CORE2$$Limit
#define __mcaldata_start_core3          MCALDATA_CORE3$$Base
#define __mcaldata_end_core3            MCALDATA_CORE3$$Limit

#define __tcm_data_start                TCMDATA$$Base
#define __tcm_data_end                  TCMDATA$$Limit
#define __tcm_data_load_addr            TCMDATA_init$$Base
#define __iram_data_start               IRAMDATA$$Base
#define __iram_data_end                 IRAMDATA$$Limit
#define __iram_data_load_addr           IRAMDATA_init$$Base
#define __tcm_func_start                TCMFUNC$$Base
#define __tcm_func_end                  TCMFUNC$$Limit
#define __tcm_func_load_addr            TCMFUNC_init$$Base
#define __iram_func_start               IRAMFUNC$$Base
#define __iram_func_end                 IRAMFUNC$$Limit
#define __iram_func_load_addr           IRAMFUNC_init$$Base
#define __core0_stack_start             CORE0CSTACK$$Base
#define __core0_stack_end               CORE0CSTACK$$Limit
#define __core1_stack_start             CORE1CSTACK$$Base
#define __core1_stack_end               CORE1CSTACK$$Limit
#define __core2_stack_start             CORE2CSTACK$$Base
#define __core2_stack_end               CORE2CSTACK$$Limit
#define __core3_stack_start             CORE3CSTACK$$Base
#define __core3_stack_end               CORE3CSTACK$$Limit
#define __heap_start                    HEAP$$Base
#define __heap_end                      HEAP$$Limit
#define __dma_buffer_start              DMABUFFER$$Base
#define __dma_buffer_end                DMABUFFER$$Limit
#define __start_TEST_SECTION            TEST_SECTION$$Base
#define __stop_TEST_SECTION             TEST_SECTION$$Limit
#define __start_shell_cmd               shell_cmd$$Base
#define __stop_shell_cmd                shell_cmd$$Limit
#define __mcaltext_fast_start           MCALTEXTFAST$$Base
#define __mcaltext_fast_end             MCALTEXTFAST$$Limit
#define __mcaltext_fast_load_addr       MCALTEXTFAST_init$$Base
#endif /** #if defined(__ARMCC_VERSION) */

#endif /* LNK_SYM_E3650_H */
/* End of file */
